package com.jytc.framework.bo;

import java.util.List;

import com.jytc.framework.commons.Page;
import com.jytc.framework.commons.PropertyFilter;
import com.jytc.framework.dto.FwUserDTO;
import com.jytc.framework.po.FwUser;

/**
 * @title: FSysUserBO.java
 * @description: 用户管理业务操作接口
 * 
 * @author: dongyuese
 *
 */
public interface FwUserBO
{

	/**
	 * 按照条件分页查询用户信息
	 * @param page　分页信息
	 * @param filters　过滤条件列表
	 * @return　用户信息集合
	 * @throws Exception
	 */
	Page query(final Page page, final List<PropertyFilter> filters) throws Exception;

	/**
	 * 保存用户信息
	 * @param sysLoginDTO　用户信息数据传输对象
	 * @return　保存成功或失败
	 * @throws Exception
	 */
	int save(FwUserDTO fwUserDTO) throws Exception;

	/**
	 * 根据登录ID查询用户信息
	 * @param loginId　登录ID
	 * @return
	 * @throws Exception
	 */
	FwUserDTO findById(Integer loginId) throws Exception;

	/**
	 * 修改用户信息
	 * @param sysLoginDTO　用户信息数据传输对象
	 * @return 保存成功或失败
	 * @throws Exception
	 */
	int update(FwUserDTO fwUserDTO) throws Exception;

	/**
	 * 根据用户ID删除用户信息
	 * @param loginId 用户ID
	 * @return　删除成功或失败
	 * @throws Exception
	 */
	int deleteById(Integer loginId) throws Exception;

	/**
	 * 批量删除用户信息
	 * @param loginIds　用户ID集合
	 * @return　删除成功或失败
	 * @throws Exception
	 */
	int deleteByIds(Integer[] loginIds) throws Exception;

	/**
	 * 根据单位ID以及用户的有效性获取用户信息集合，如果validTag为空，则默认获取该单位下所有用户
	 * @param corpId　单位ID
	 * @param validTag　有效标志
	 * @return　用户信息集合
	 * @throws Exception
	 */
	List<FwUser> queryByCorpAndValidTag(Integer corpId, String validTag) throws Exception;

	/**
	 * 根据角色ID，获取所有引用该角色的用户信息
	 * @param roleId　角色ID
	 * @return　用户信息集合
	 * @throws Exception
	 */
	List<FwUser> queryByRoleId(Integer roleId) throws Exception;

	/**
	 * 根据单位ID、用户类型查询用户信息，主要用于一个单位下只能存在一个系统管理员的判断
	 * @param corpId　单位ID
	 * @param userType　用户类型
	 * @return　用户信息集合
	 * @throws Exception
	 */
	List<FwUser> queryByCorpAndType(Integer corpId, Integer userType) throws Exception;
}
